Re: [SQL] Multiple values for a field - Mailing list pgsql-sql

From Herouth Maoz
Subject Re: [SQL] Multiple values for a field
Date
Msg-id l03130307b3dc6e665034@[147.233.159.109]
Whole thread Raw
In response to Multiple values for a field  ("Mike Field" <mike@fieldco.com>)
Responses Re: [SQL] Multiple values for a field  ("Ross J. Reedstrom" <reedstrm@wallace.ece.rice.edu>)
List pgsql-sql
At 18:11 +0300 on 13/08/1999, Mike Field wrote:


> Do  you see any problem if I put the actual names of the authors,  comma
> separated, in the author field (for example:  Mike Field, Tom  Lane, ZZ Top)?
> I would do the same for my six fields which may have multiple  values
> (author, region, subject, related_projects, doc_type, translations) I  have
> about 550 documents to put into the database.

Repeating groups are harder to update. What if you found out that you made
a spelling mistake in some region, and you have to go through the entire
table, find it in each of the strings, and replace with the correct
version. What if you wanted to drop an author? You have to select it, fix
and update. Too much work.

> I know using text  fields would take up more space relative to just using a
> number to refer to  the author... but using a number makes me perform more
> loops and thus, more  processing time.

An alternative may be to create an aggregate function that will give you
the comma-separated list you desired upon request:

CREATE AGGREGATE textcat_all
(basetype = text,sfunc1 = textcat,stype1 = text
);

Then you can do something like:

SELECT da.docid, textcat_all( a.Author_name || ',' )
FROM docs_authors da, authors a
WHERE da.authorid = a.id
GROUP BY da.docid;

This will return a comma-separated list of author names for each doc id,
assuming the actual author name is in a separate table. There is an extra
comma at the end, but I don't suppose that's too much of a problem.

Herouth

--
Herouth Maoz, Internet developer.
Open University of Israel - Telem project
http://telem.openu.ac.il/~herutma




pgsql-sql by date:

Previous
From: Herouth Maoz
Date:
Subject: Re: [SQL] Intentionally inserting duplicates without aborting
Next
From: Herouth Maoz
Date:
Subject: Re: [SQL] err: select f() from i where (f()) in (select f() from x group by j);